package com.houweishi.module.clocking.service;

import com.houweishi.common.core.domain.AjaxResult;
import com.houweishi.module.clocking.domain.BizClocking;
import com.houweishi.module.clockingcount.domain.BizClockingCount;

import java.util.List;

/**
 * 员工打卡管理Service接口
 * 
 * @author houweishi
 * @date 2023-02-28
 */
public interface IBizClockingService 
{
    /**
     * 查询员工打卡管理
     * 
     * @param id 员工打卡管理主键
     * @return 员工打卡管理
     */
    public BizClocking selectBizClockingById(Long id);

    /**
     * 查询员工打卡管理列表
     * 
     * @param bizClocking 员工打卡管理
     * @return 员工打卡管理集合
     */
    public List<BizClocking> selectBizClockingList(BizClocking bizClocking);

    /**
     * 新增员工打卡管理
     * 
     * @param bizClocking 员工打卡管理
     * @return 结果
     */
    public AjaxResult insertBizClocking(BizClocking bizClocking);

    /**
     * 修改员工打卡管理
     * 
     * @param bizClocking 员工打卡管理
     * @return 结果
     */
    public int updateBizClocking(BizClocking bizClocking);

    /**
     * 批量删除员工打卡管理
     * 
     * @param ids 需要删除的员工打卡管理主键集合
     * @return 结果
     */
    public int deleteBizClockingByIds(Long[] ids);

    /**
     * 删除员工打卡管理信息
     * 
     * @param id 员工打卡管理主键
     * @return 结果
     */
    public int deleteBizClockingById(Long id);


    /**
     * 查询某员工打卡当天打卡记录列表
     *
     * @param bizClocking 员工打卡管理
     * @return 员工打卡管理集合
     */
    public List<BizClocking> selectUserBizClockingListToday(BizClocking bizClocking);


    /**
     * 定时查询并记录前一天打卡记录情况
     * @param bizClocking
     * @return
     */
    public List<BizClockingCount> selectBizClockingListToday(BizClocking bizClocking);

    /**
     * 根据前一天打卡记录，判断员工打卡是否异常
     * @return
     */
    AjaxResult dealAttendance();
}
